package done.easy_501_600;

import com.study.common.TreeNode;
import org.junit.Test;

import static com.study.util.LogUtil.info;

/**
 * 530. Minimum Absolute Difference in BST 二叉搜索树的最小绝对差
 * <p>
 * 给定一个所有节点为非负值的二叉搜索树，求树中任意两节点的差的绝对值的最小值。
 * <p>
 * 示例 :
 * 输入:
 * 1
 * \
 * 3
 * /
 * 2
 * <p>
 * 输出:
 * 1
 * 解释:
 * 最小绝对差为1，其中 2 和 1 的差的绝对值为 1（或者 2 和 3）。
 *
 * @author 大硕
 * 2019-04-12 7:07 AM
 **/
@SuppressWarnings("all")
public class MinimumAbsoluteDifferenceInBST {

    // 中序遍历
    public int getMinimumDifference(TreeNode root) {
        // 190412 first
        return -1;
    }

    @Test
    public void test() {
        TreeNode root = new TreeNode(1,
                null, new TreeNode(3,
                2, null));
        info(getMinimumDifference(root));
    }
}





















































/*
// 中序遍历 先左后右
public int getMinimumDifference(TreeNode root) {
    // 如果min取0 那无论如何都是0了
    // 因为0就是最小的绝对值
    int min = MAX_VALUE;
    int pre = MAX_VALUE;

    Stack<TreeNode> stack = new Stack<>();
    TreeNode cur = root;

    while (!stack.isEmpty() || cur != null) {
        if (cur != null) {
            stack.push(cur);
            cur = cur.left;
        } else {
            cur = stack.pop();
            // 现在的值 root.val 减刚才的值 pre
            min = min(abs(cur.val - pre), min);
            pre = cur.val;
            cur = cur.right;
        }
    }
    return min;
}
*/
